package com.cet6.service;

import com.cet6.dto.DailyWordDTO;
import com.cet6.dto.DailyStudyProgressDTO;
import com.cet6.entity.DailyTask;

import java.time.LocalDate;
import java.util.List;

public interface DailyStudyService {
    
    /**
     * 获取今日推荐单词
     * @param userId 用户ID
     * @return 今日推荐单词列表
     */
    List<DailyWordDTO> getDailyWords(Long userId);
    
    /**
     * 提交每日学习进度
     * @param progressDTO 学习进度数据
     * @return 操作结果
     */
    boolean submitDailyProgress(DailyStudyProgressDTO progressDTO);
    
    /**
     * 获取用户今日任务
     * @param userId 用户ID
     * @param taskDate 任务日期
     * @return 每日任务
     */
    DailyTask getDailyTask(Long userId, LocalDate taskDate);
    
    /**
     * 创建或更新每日任务
     * @param userId 用户ID
     * @param taskDate 任务日期
     * @param totalWords 总单词数
     * @param newWords 新单词数
     * @param reviewWords 复习单词数
     * @return 每日任务
     */
    DailyTask createOrUpdateDailyTask(Long userId, LocalDate taskDate, Integer totalWords, Integer newWords, Integer reviewWords);
    
    /**
     * 更新学习记录（包含复习调度算法）
     * @param userId 用户ID
     * @param wordId 单词ID
     * @param result 学习结果(0-错误,1-正确)
     * @param studyType 学习类型(0-新单词,1-复习单词)
     * @return 操作结果
     */
    boolean updateStudyRecord(Long userId, Long wordId, Integer result, Integer studyType);
}
